// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

package ascii

import (
	"strings"
	"unicode"
)

// EqualFold是字符串。等倍，仅限ASCII码。它报告s和t 
// 是否相等，ASCII大小写不敏感。
func EqualFold(s, t string) bool {
	if len(s) != len(t) {
		return false
	}
	for i := 0; i < len(s); i++ {
		if lower(s[i]) != lower(t[i]) {
			return false
		}
	}
	return true
}

// lower返回b的ASCII小写版本。
func lower(b byte) byte {
	if 'A' <= b && b <= 'Z' {
		return b + ('a' - 'A')
	}
	return b
}

// IsPrint返回s是否为ASCII，是否可根据
// https:
func IsPrint(s string) bool {
	for i := 0; i < len(s); i++ {
		if s[i] < ' ' || s[i] > '~' {
			return false
		}
	}
	return true
}

// Is返回s是否为ASCII。
func Is(s string) bool {
	for i := 0; i < len(s); i++ {
		if s[i] > unicode.MaxASCII {
			return false
		}
	}
	return true
}

// ToLower返回s的小写版本（如果s是ASCII且可打印）。
func ToLower(s string) (lower string, ok bool) {
	if !IsPrint(s) {
		return "", false
	}
	return strings.ToLower(s), true
}
